`:top
In `F33f`_`[Linux`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux]`_`f, the `!System.map`! file is a `F33f`_`[symbol table`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Symbol_table]`_`f used by the `F33f`_`[kernel`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Kernel_(operating_system)]`_`f.
A symbol table is a look-up between symbol names and their addresses in memory. A symbol name may be the name of a variable or the name of a function. The System.map is required when the address of a symbol name, or the symbol name of an address, is needed. It is especially useful for debugging `F33f`_`[kernel panics`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Kernel_panic]`_`f and `F33f`_`[kernel oopses`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux_kernel_oops]`_`f. The kernel does the address-to-name translation itself when `B100`F9d9CONFIG_KALLSYMS`f`b is enabled so that tools like ksymoops are not required.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]
>>Contents
• `F0af`_`[Internals`#internals]`_`f
• `F0af`_`[Symbol types`#symbol-types]`_`f
• `F0af`_`[Filesystem location`#filesystem-location]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f
-─
>>Internals
The following is part of a `B100`F9d9System.map`f`b file:`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f]
`B100`F9d9c041bc90 b packet_sklist`f`b
`B100`F9d9c041bc94 b packet_sklist_lock`f`b
`B100`F9d9c041bc94 b packet_socks_nr`f`b
`B100`F9d9c041bc98 A __bss_stop`f`b
`B100`F9d9c041bc98 A _end`f`b
`B100`F9d9c041c000 A pg0`f`b
`B100`F9d9ffffe400 A __kernel_vsyscall`f`b
`B100`F9d9ffffe410 A SYSENTER_RETURN`f`b
`B100`F9d9ffffe420 A __kernel_sigreturn`f`b
`B100`F9d9ffffe440 A __kernel_rt_sigreturn`f`b
Because addresses may change from one build to the next, a new `B100`F9d9System.map`f`b is generated for each build of the kernel.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f]
>>>Symbol types
The character between the address and the symbol (separated by spaces) is the `*type`* of a symbol. The `B100`F9d9`F33f`_`[nm`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Nm_(Unix)]`_`f`f`b utility program on `F33f`_`[Unix systems`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Unix_system]`_`f lists the symbols from object files. The `B100`F9d9System.map`f`b is directly related to it, in that this file is produced by `B100`F9d9nm`f`b on the whole kernel program – just like `B100`F9d9nm`f`b lists the symbols and their types for any small object programs.`:cite-ref-nm-man-4-0[`F5bf`_`[4`#cite-note-nm-man-4]`_`f]
Some of these types are:`:cite-ref-nm-man-4-1[`F5bf`_`[4`#cite-note-nm-man-4]`_`f]
• `B100`F9d9A`f`b for absolute
• `B100`F9d9B`f`b or `B100`F9d9b`f`b for uninitialized data section (called BSS)
• `B100`F9d9D`f`b or `B100`F9d9d`f`b for initialized data section
• `B100`F9d9G`f`b or `B100`F9d9g`f`b for initialized data section for small objects (global)
• `B100`F9d9i`f`b for sections specific to DLLs
• `B100`F9d9N`f`b for debugging symbol
• `B100`F9d9p`f`b for stack unwind section
• `B100`F9d9R`f`b or `B100`F9d9r`f`b for read only data section
• `B100`F9d9S`f`b or `B100`F9d9s`f`b for uninitialized data section for small objects
• `B100`F9d9T`f`b or `B100`F9d9t`f`b for text (code) section
• `B100`F9d9U`f`b for undefined
• `B100`F9d9V`f`b or `B100`F9d9v`f`b for weak object
• `B100`F9d9W`f`b or `B100`F9d9w`f`b for weak objects which have not been tagged so
• `B100`F9d9-`f`b for stabs symbol in an a.out object file
• `B100`F9d9?`f`b for "symbol type unknown"
>>Filesystem location
After building the `F33f`_`[Linux kernel`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux_kernel]`_`f, `B100`F9d9System.map`f`b is located in the root of the source directory. However, some further software installation steps expect to locate the file elsewhere:`:cite-ref-5[`F5bf`_`[5`#cite-note-5]`_`f]
• as `B100`F9d9`F33f`_`[/boot/`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=boot]`_`fSystem.map-$(`F33f`_`[uname`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Uname]`_`f -r)`f`b
• building `F33f`_`[SVGAlib`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=SVGALib]`_`f expects to find `B100`F9d9/lib/modules/$(uname -r)/build/System.map`f`b
>>See also
• `F33f`_`[Linux kernel oops`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux_kernel_oops]`_`f
• `F33f`_`[Kernel panic`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Kernel_panic]`_`f
>>References
`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f "FAQ/System.map - Linux Kernel Newbies". kernelnewbies.org. 2006-04-14. Retrieved 2014-04-06.
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f `:citerefpeter-jay-salzman2003`aPeter Jay Salzman (2003-05-28). "The system.map File". Rlworkman.net. Retrieved 2014-04-06.
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f "Kernel-HOWTO". faqs.org. Retrieved 2014-04-06.
`:cite-note-nm-man-4`!4.`! `F0af`_`[↑`#cite-ref-nm-man-4-0]`_`f "nm(1): symbols from object files - Linux man page". Linux.die.net. Retrieved 2014-04-06.
`:cite-note-5`!5.`! `F0af`_`[↑`#cite-ref-5]`_`f "Peter's Notes: System.map". Linuxmafia.com. 2003-05-29. Retrieved 2014-04-06.
`c`F0af`_`[↑ Back to top`#top]`_`f`a